package com.sunday.common.spring.study;

import org.springframework.context.annotation.DeferredImportSelector;
import org.springframework.core.type.AnnotationMetadata;

/**
 * {@link org.springframework.kafka.annotation.KafkaListenerConfigurationSelector}
 */
public class MyListenerConfigurationSelector implements DeferredImportSelector {

    /**
     * DeferredImportSelector 是 Spring Framework 提供的一个接口，用于在运行时动态选择需要导入的配置类。它允许根据条件或其他因素来延迟选择性地导入配置。
     * 具体来说，通过实现 DeferredImportSelector 接口并重写 selectImports() 方法，可以根据特定条件返回一组要导入的配置类的全限定名。这些配置类将在应用上下文启动时被动态导入。
     * DeferredImportSelector 可以用于实现条件化的自动配置或灵活的配置扩展机制。它可以根据运行时的环境、配置或其他条件选择不同的配置类进行导入，从而根据需求对应用程序进行自定义配置。
     * 使用 DeferredImportSelector 可以在应用程序启动时根据条件动态选择导入的配置类，提供更高度的灵活性和可扩展性。
     */
    @Override
    public String[] selectImports(AnnotationMetadata importingClassMetadata) {
        return new String[] { MyBeanDefinitionRegistrar.class.getName() };
    }

}
